#include "chart.h"
#include "chartview.h"

#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QtCore/QtMath>
#include <QtCore/QRandomGenerator>
#include <QtCharts/QLineSeries> // 折线图
#include <QtCharts/QValueAxis>
#include <QDebug>

QT_CHARTS_USE_NAMESPACE

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

//![正弦函数是一种常见的三角函数，它在数学和科学领域中广泛应用。其常用的公式表示为：
//!    y = A * sin(B * x + C) + D
//!    其中：
//!    A 表示振幅，控制波形的最大值和最小值之间的差值；
//!    B 表示频率，控制波形的周期性；
//!    C 表示相位偏移，控制波形在x轴上的平移；
//!    D 表示垂直偏移，控制波形在y轴上的平移。]
//!   【暗示】实际项目开发其他地方改的少 ，重点修改这里的参数即可快速搭建你的正弦图
    QLineSeries *series = new QLineSeries();
    for (int i = 0; i < 500; i++) {
        QPointF p((qreal) i, qSin(M_PI / 50 * i) * 100);
        p.ry() += QRandomGenerator::global()->bounded(20);  // 是一个Qt框架中的随机数生成函数。它返回一个介于0和19之间的随机整数。
        *series << p;
    }
    qDebug()<<series->points(); // 500个点组成的正弦图

//![end]

    // 创建图表对象
    Chart *chart = new Chart();
    chart->addSeries(series);

    chart->setTitle("放大/缩小示例");
    chart->setAnimationOptions(QChart::SeriesAnimations); // 在图表中启用系列动画。
    chart->legend()->hide();        // 隐藏图例
    chart->createDefaultAxes();     // 创建默认坐标

    ChartView *chartView = new ChartView(chart);
    chartView->setRenderHint(QPainter::Antialiasing); // 抗锯齿

    QMainWindow window;
    window.setCentralWidget(chartView);
    window.resize(400, 300);
    window.grabGesture(Qt::PanGesture);
    window.grabGesture(Qt::PinchGesture);
    window.show();

    return a.exec();
}
